# 作业：
# 1、有这样的一个列表，深度不可知，列表里面还会嵌套列表，我想要把这个列表从左到右拼接成一个新的列表，且顺序不变
# 举例：[12,33,[11,22,33,[55,66,99]],[55,66]]
# 变成：[12, 33, 11, 22, 33, 55, 66, 99, 55, 66]
# 2、编写装饰器，为多个函数加上认证的功能（用户的账号密码）
#  要求登录成功一次，后续的函数都无需输入用户名和密码
# 3、请实现一个装饰器，把函数的返回值+100然后返回
# 4、请实现一个装饰器，通过一次调用使函数重复执行5次
# 5、输入任意个字符串,分别实现从小到大输出和从大到小输出
# 6、接收n个数字，求这些参数数字的和
# 7、编写一个函数，实现数字的自增（从0开始，每调用一次，数字+1）
"""# 1、有这样的一个列表，深度不可知，列表里面还会嵌套列表，我想要把这个列表从左到右拼接成一个新的列表，且顺序不变
 举例：[12,33,[11,22,33,[55,66,99]],[55,66]]
 变成：[12, 33, 11, 22, 33, 55, 66, 99, 55, 66]
def flatten_list(input_list): #定义一个函数名为flatten_list，参数名为input_list
    result = [] #创建一个名为result空的列表
    for i in input_list: #条件 i 在参数input_list
        if type(i) == list: #判断i的类型是列表
            result.extend(flatten_list(i)) #调用flatten_list函数，将嵌套列表i展平，并将结果添加到result列表中
        else: #否则执行下面的语句
            result.append(i) #如果i的类型不是列表，则执行该语句，将元素i添加到result空列表内
    return result #返回result列表继续判断i
input_list = [12, 33, [11, 22, 33, [55, 66, 99]], [55, 66]] #加入形参
output_list = flatten_list(input_list) # 调用 flatten_list 函数，将 input_list 展平，并将结果赋值给 output_list
print(output_list) #打印output_list
"""# 2、编写装饰器，为多个函数加上认证的功能（用户的账号密码） 要求登录成功一次，后续的函数都无需输入用户名和密码
def authentication_name(func):
    def wrapper():
        input_name = "信如荟"
        input_password = "Aa123456"
        if func() == (input_name, input_password):
            print("用户名和密码正确")
        else:
            print("用户名或密码错误")
    return wrapper
@authentication_name
def input_customer():
    return "信如荟", "Aa123456"
input_customer()
"""
"""# 3、请实现一个装饰器，把函数的返回值+100然后返回
def Return_value(function):
    def wrapper():
        input_num = None
        result = function()
        if isinstance(result, int):
            input_num = result + 100
        else:
            print("该函数的返回值不是整数，不适合该程序运行")
        return input_num
    return wrapper
@Return_value
def input_num():
    return 1
print(input_num())
"""
"""# 4、请实现一个装饰器，通过一次调用使函数重复执行5次
def repeat_5_times(func): #定义一个装饰器叫repeat_5_times，形参为func
    def wrapper(*args, **kwargs): #定义一个函数wrapper
        result=0
        for _ in range(5): #遍历五次
            result = func(*args, **kwargs) #将形参复制给result
        return result #返回result
    return wrapper #返回wrapper
@repeat_5_times #调用装饰器
def say_hello():
    print("Hello!")
say_hello()
"""

"""# 5、输入任意个字符串,分别实现从小到大输出和从大到小输出
def Decorator(func):
    def achieve_sort (*args):
        sorted_args_T=sorted(args,key=len,reverse=True)
        sorted_args_F=sorted(args,key=len,reverse=False)
        return func(sorted_args_T,sorted_args_F)
    return achieve_sort

@Decorator
def Multiple_str():
    return "1569427"
"""# 6、接收n个数字，求这些参数数字的和
def sum_num(func):
    def summ(n):
        func(n)
        result = 0       
        for i in range(1, n + 1):
            
            result += i  
        return result
    return summ
@sum_num
def sum_int(n):
    pass
print(sum_int(3))
"""
"""# 7、编写一个函数，实现数字的自增（从0开始，每调用一次，数字+1）
counter=0
def Autoincrement():
     def a():
         global counter
         counter+=1
         return counter
     return a
c=Autoincrement()
print(c())
print(c())
print(c())
print(c())
"""




